bf6bef2b3c5867aac2ab9202d28d3c9a65cff666,src/main/java/org/gbif/ipt/task/GenerateDCAT.java,GenerateDCAT,createDCATCatalogInformation,#,277
Before Change
catalogBuilder.append(" a dcat:Catalog");
//dct:title
if (ipt != null) {
addPredicateToBuilder(catalogBuilder, "dct:title");
addObjectToBuilder(catalogBuilder, org.getName(), ObjectTypes.LITERAL);
} else {
LOG.error("IPT is null, can't get title");
}
//dct:description
if (ipt != null) {
addPredicateToBuilder(catalogBuilder, "dct:description");
addObjectToBuilder(catalogBuilder, org.getDescription(), ObjectTypes.LITERAL);
} else {
LOG.error("IPT is null, can't get description");
}
//dct:publisher
if (ipt != null && ipt.getKey() != null) {
addPredicateToBuilder(catalogBuilder, "dct:publisher");
String publisher = PUBLISHER_BASELINK + org.getKey() + "#Organization";
addObjectToBuilder(catalogBuilder, publisher, ObjectTypes.RESOURCE);
}
//dcat:dataset
if (!uris.isEmpty()) {
addPredicateToBuilder(catalogBuilder, "dcat:dataset");
addObjectsToBuilder(catalogBuilder, uris, ObjectTypes.RESOURCE);
}
//foaf:homepage
if (cfg != null && cfg.getBaseUrl() != null) {
addPredicateToBuilder(catalogBuilder, "foaf:homepage");
addObjectToBuilder(catalogBuilder, cfg.getBaseUrl(), ObjectTypes.RESOURCE);
}
//dct:issued
if (firstPublishedDatePresent) {
addPredicateToBuilder(catalogBuilder, "dct:issued");
addObjectToBuilder(catalogBuilder, parseToIsoDate(firstCreation), ObjectTypes.LITERAL);
}
//dct:modified
if (lastPublishedDatePresent) {
addPredicateToBuilder(catalogBuilder, "dct:modified");
addObjectToBuilder(catalogBuilder, parseToIsoDate(lastModification), ObjectTypes.LITERAL);
}
//dcat:themeTaxonomy
addPredicateToBuilder(catalogBuilder, "dcat:themeTaxonomy");
String themeTaxonomy = THEME_TAXONOMY_URI;
themeTaxonomies.add(encapsulateObject(THEME_TAXONOMY_URI, ObjectTypes.RESOURCE) + " a skos:ConceptScheme ; dct:title \"" + CATALOG_THEME_TITLE + "\"@en .");
addObjectToBuilder(catalogBuilder, themeTaxonomy, ObjectTypes.RESOURCE);
//dct:rights
addPredicateToBuilder(catalogBuilder, "dct:license");
addObjectToBuilder(catalogBuilder, CATALOG_RIGHTS, ObjectTypes.RESOURCE);
//dct:spatial
if (cfg.getLongitude() != null && cfg.getLatitude() != null) {
addPredicateToBuilder(catalogBuilder, "dct:spatial");
After Change
protected String createDCATCatalogInformation() {
StringBuilder catalogBuilder = new StringBuilder();
List<String> themeTaxonomies = new ArrayList<String>();
Ipt ipt = registrationManager.getIpt();
//Run over resources
List<String> uris = new ArrayList<String>();
Date firstCreation = new Date();
boolean firstPublishedDatePresent = false;
Date lastModification = new Date(0);
boolean lastPublishedDatePresent = false;
for (Resource res : resourceManager.listPublishedPublicVersions()) {
if (res.getEml().parseLicenseUrl() != null) {
String uri = cfg.getResourceUrl(res.getShortname()) + "#Dataset";
uris.add(uri);
if (res.getCreated() != null && res.getCreated().before(firstCreation)) {
firstCreation = res.getCreated();
firstPublishedDatePresent = true;
}
if (res.getLastPublished() != null && res.getLastPublished().after(lastModification)) {
lastModification = res.getLastPublished();
lastPublishedDatePresent = true;
}
}
}
//Base
String url = cfg.getBaseUrl();
url += "#Catalog";
catalogBuilder.append(encapsulateObject(url, ObjectTypes.RESOURCE));
catalogBuilder.append("\n");
catalogBuilder.append(" a dcat:Catalog");
String publisherBaselink = settings.get(PUBLISHER_BASELINK_KEY);
if (ipt != null && publisherBaselink != null) {
//dct:title
addPredicateToBuilder(catalogBuilder, "dct:title");
addObjectToBuilder(catalogBuilder, ipt.getName(), ObjectTypes.LITERAL);
//dct:description
if (ipt.getDescription() != null) {
addPredicateToBuilder(catalogBuilder, "dct:description");
addObjectToBuilder(catalogBuilder, ipt.getDescription(), ObjectTypes.LITERAL);
} else {
LOG.debug("IPT description is null");
}
//dct:publisher
addPredicateToBuilder(catalogBuilder, "dct:publisher");
String publisher = publisherBaselink + ipt.getOrganisationKey() + "#Organization";
addObjectToBuilder(catalogBuilder, publisher, ObjectTypes.RESOURCE);
//dcat:dataset
if (!uris.isEmpty()) {
addPredicateToBuilder(catalogBuilder, "dcat:dataset");
addObjectsToBuilder(catalogBuilder, uris, ObjectTypes.RESOURCE);
}
//foaf:homepage
if (cfg.getBaseUrl() != null) {
addPredicateToBuilder(catalogBuilder, "foaf:homepage");
addObjectToBuilder(catalogBuilder, cfg.getBaseUrl(), ObjectTypes.RESOURCE);
}
//dct:issued
if (firstPublishedDatePresent) {
addPredicateToBuilder(catalogBuilder, "dct:issued");
addObjectToBuilder(catalogBuilder, parseToIsoDate(firstCreation), ObjectTypes.LITERAL);
}
//dct:modified
if (lastPublishedDatePresent) {
addPredicateToBuilder(catalogBuilder, "dct:modified");
addObjectToBuilder(catalogBuilder, parseToIsoDate(lastModification), ObjectTypes.LITERAL);
}
//dcat:themeTaxonomy
String themeTaxonomyUri = settings.get(THEME_TAXONOMY_URI_KEY);
String catalogThemeTitle = settings.get(CATALOG_THEME_TITLE_KEY);
if (themeTaxonomyUri != null && catalogThemeTitle != null) {
addPredicateToBuilder(catalogBuilder, "dcat:themeTaxonomy");
themeTaxonomies.add(
encapsulateObject(themeTaxonomyUri, ObjectTypes.RESOURCE) + " a skos:ConceptScheme ; dct:title \""
+ catalogThemeTitle + "\"@en .");
addObjectToBuilder(catalogBuilder, themeTaxonomyUri, ObjectTypes.RESOURCE);
}
//dct:rights
String catalogRights = settings.get(CATALOG_RIGHTS_KEY);
if (catalogRights != null) {
addPredicateToBuilder(catalogBuilder, "dct:license");
addObjectToBuilder(catalogBuilder, catalogRights, ObjectTypes.RESOURCE);
}
//dct:spatial
if (cfg.getLongitude() != null && cfg.getLatitude() != null) {
addPredicateToBuilder(catalogBuilder, "dct:spatial");
String spatial =
" a dct:Location ; locn:geometry \"" + "{ \\\"type\\\": \\\"Point\\\", \\\"coordinates\\\": [ " + cfg
.getLongitude() + "," + cfg.getLatitude() + " ] }\" ";
addObjectToBuilder(catalogBuilder, spatial, ObjectTypes.OBJECT);
} else {
LOG.debug("No spatial data defined for the IPT");
}
//dct:language
String languageLink = settings.get(LANGUAGE_LINK_KEY);
if (languageLink != null) {
languageLink = languageLink + "en";
addPredicateToBuilder(catalogBuilder, "dct:language");
addObjectToBuilder(catalogBuilder, languageLink, ObjectTypes.RESOURCE);